package org.zhuzx.util;

import com.alibaba.fastjson.PropertyNamingStrategy;
import com.alibaba.fastjson.serializer.SerializeConfig;

/**
 * 次级通用常量集，作为UnifiedConstants的扩展。
 * 归属原则：需要依赖第三方jar包的一些特殊常量。
 * @author zhuzx 2022/12/3
 */
public class SecondaryConstants {

	/**
	 * FastJson序列化时使用的驼峰转下划线策略的配置对象，经实测，使用它进行序列化时，不能转化Map的键名，
	 * 但可以转化Map中嵌套的实体对象的属性名。<br>
	 * 比如Collections.singletonMap("aaaBbb", xxObj)，对这个Map执行转下划线的序列化，会得到：<br>
	 * {"aaaBbb":{"field_name1":1,"field_name2":2}}<br>
	 * 详见官方文档：<br>
	 * https://github.com/alibaba/fastjson/wiki/PropertyNamingStrategy_cn
	 */
	public static final SerializeConfig FASTJSON_SERIALIZE_CONFIG_SNAKE_CASE = initFastjsonSerializeConfigSnakeCase();
	private static SerializeConfig initFastjsonSerializeConfigSnakeCase() {
		SerializeConfig serializeConfig = new SerializeConfig();
		serializeConfig.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;
		return serializeConfig;
	}
	
}